/** C O N F I G U R A T I O N   B I T S ******************************/

#pragma config FOSC = HSHP //HS oscillator (high power > 16 MHz)
#pragma config WDTEN = OFF, LVP = OFF, MCLRE = EXTMCLR //Watchdog timer off, single-supply ICSP disabled, MCLR pin enabled
#pragma interrupt interruptServiceRoutine

#pragma code _vecteur_it_high = 0x08
    void itHigh(void){
        _asm goto interruptServiceRoutine
        _endasm
    }
#pragma code 

/** I N C L U D E S **************************************************/
#include "p18f45k20.h"
#include <delays.h>

/** D E C L A R A T I O N S ******************************************/
unsigned char var_tmp;
unsigned char var_tmp2;

/**  **************************/
void main (void){
	/** TEST LED ET BOUTONS POUR PREMIER PIC *************************/
	/* Fonction qui permet de tester le bouton et les LEDs du PIC1
	* PIC1
	* LED_GPSL70 : RB3
	* LED_ACCELERO : RB4
	* LED_GYRO : RB5
	* Bouton_parabole : RE0*/
		TRISB &= 0xC7; 	// PORTB bit 7 to output (0); bits 6:0 are inputs (1)
		//Déclare RE0 comme une entrée
		TRISE |= 0x01;
		//Permet de passer d'une sortie digitale à analogique, ici adapté
		//puisqu'on utilise la sortie pour allumer une LED
		ANSELEbits.ANSE0=0;
		//Mémoire tampon de l'état précédent d'allumage des LEDs
		var_tmp=0;
		//Mémoire tampon du premier appui sur le bouton
		var_tmp2=1;
		while(1){
			/*PORTEbits.RE0 vaut 0 lorsqu'on appuie sur le bouton
			* pour éviter que les LEDs clignotent constamment, on ajoute 
			* une mémoire, pour que les changements ne soient fait qu'une
			* seule fois par appuie du bouton. */
			if(PORTEbits.RE0==0&&var_tmp2==0){
				/*Si la dernière fois les LEDs étaient éteintes on les
				* allume et inversement. */
				if(var_tmp ==0){
					LATBbits.LATB3 = 1;
					LATBbits.LATB4 = 1;
					LATBbits.LATB5 = 1;
				}else{
					LATBbits.LATB3 = 0;
					LATBbits.LATB4 = 0;
					LATBbits.LATB5 = 0;
				}
				var_tmp=LATBbits.LATB3;
				//Evite que l'on repasse constamment dans le if
				var_tmp2=1;
			}
			//Réinitialise la variable lorsque le bouton est relaché.
			if(PORTEbits.RE0!=0) var_tmp2=0;
		}	
		/*Code qui fonctionne qui permet lors de l'appui du bouton
		* d'allumer les LEDs et lors de son relachement de les
		* éteindre */
		/*if(PORTEbits.RE0 ==0){
					LATBbits.LATB3 = 1;
					LATBbits.LATB4 = 1;
					LATBbits.LATB5 = 1;
				}else{
					LATBbits.LATB3 = 0;
					LATBbits.LATB4 = 0;
					LATBbits.LATB5 = 0;
				}
		*/
}

void interruptServiceRoutine(void){
		
}